package com.runner.utility;

import java.util.ArrayList;
import java.util.Arrays;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.runner.player.Player;
import com.runner.track.Block;
import com.runner.track.Coin;
import com.runner.track.Ground;

public interface Constants {

	public static final String ARTPATH="data/art/";
	
	public static final String GROUND_PATH = ARTPATH+"ground2.png";
	public static final String NULL_GROUND_PATH = ARTPATH+"null_ground.png";
	public static final String BLOCK_DIRT_PATH = ARTPATH+"block_dirt.png";
	public static final String BLOCK_STONE_PATH = ARTPATH+"block_stone_dark.png";
	public static final String COIN_PATH = ARTPATH+"coins.png";
	public static final String SINGLE_COIN_PATH = ARTPATH+"singleCoin.png";
	public static final String BACKGROUNDMAIN_RINGER = ARTPATH+"bg_grasslands.png";
	public static final String BACKGROUNDMAIN_APRIL = ARTPATH+"bg_grasslands_april.png";
	public static final String BACKGROUNDMAIN_GEO = ARTPATH+"bg_grasslands_red.png";
	public static final String MUTE = ARTPATH+"mute.png";
	public static final String UNMUTE = ARTPATH+"unmute.png";
	public static final String LEADERBOARD = ARTPATH+"leaderboard.png";
	public static final String ACHIEVEMENT = ARTPATH+"achievement.png";
	public static final String SIGN_IN = ARTPATH+"signIn.png";
	public static final String SIGN_OUT = ARTPATH+"signOut.png";
	public static final String SHIELD_PATH = ARTPATH+"shield.png";
	public static final String RINGER_PICTURE = ARTPATH+"ringer.png";
	public static final String APRIL_PICTURE = ARTPATH+"april.png";
	public static final String GEO_PICTURE = ARTPATH+"geo.png";
	public static final String MAGNET_PICTURE = ARTPATH+"coinMagnet.png";
	public static final String SHIELD_PICTURE = ARTPATH+"shield_picture.png";
	public static final String MULT_PICTURE = ARTPATH+"coinMultiplier.png";
	public static final String TRACK1_PICTURE = ARTPATH+"track1.png";
	public static final String TRACK2_PICTURE = ARTPATH+"track2.png";
	public static final String GOAL_PATH = ARTPATH+"goal.png";
	public static final String RINGER_PATH=ARTPATH+"ringer_or.png";
	public static final String RINGER_JUMP_PATH=ARTPATH+"ringer_jump_or.png";
	public static final String RINGER_SLIDE_PATH=ARTPATH+"ringer_jump_or.png";
	public static final String APRIL_PATH=ARTPATH+"april_pi.png";
	public static final String APRIL_JUMP_PATH=ARTPATH+"april_jump_pi.png";
	public static final String APRIL_SLIDE_PATH=ARTPATH+"april_jump_pi.png";
	public static final String GEO_PATH=ARTPATH+"geo_gr.png";
	public static final String GEO_JUMP_PATH=ARTPATH+"geo_jump_gr.png";
	public static final String GEO_SLIDE_PATH=ARTPATH+"geo_jump_gr.png";
	public static final String PANEL_PATH=ARTPATH+"panel_beige.png";
	public static final String RINGER_CLOUD_PATH=ARTPATH+"cloud1.png";
	public static final String APRIL_CLOUD_PATH=ARTPATH+"cloud2.png";
	public static final String GEO_CLOUD_PATH=ARTPATH+"cloud3.png";

	public static final String TRACK_RINGER_1_PATH = "data/tracks/ringer_1.txt";
	public static final String TRACK_RINGER_2_PATH = "data/tracks/ringer_2.txt";
	public static final String TRACK_APRIL_1_PATH = "data/tracks/april_1.txt";
	public static final String TRACK_APRIL_2_PATH = "data/tracks/april_2.txt";
	public static final String TRACK_GEO_1_PATH = "data/tracks/geo_1.txt";
	public static final String TRACK_GEO_2_PATH = "data/tracks/geo_2.txt";
	
	public static final String RINGER1_LB = "CgkIy5WWr40PEAIQDA";
	public static final String RINGER2_LB = "CgkIy5WWr40PEAIQDQ";
	public static final String APRIL1_LB = "CgkIy5WWr40PEAIQDg";
	public static final String APRIL2_LB = "CgkIy5WWr40PEAIQDw";
	public static final String GEO1_LB = "CgkIy5WWr40PEAIQEA";
	public static final String GEO2_LB = "CgkIy5WWr40PEAIQEQ";
	
	public static final String ACHV_RINGER1_TRACK="CgkIy5WWr40PEAIQAQ";
	public static final String ACHV_APRIL1_TRACK="CgkIy5WWr40PEAIQAw";
	public static final String ACHV_GEO1_TRACK="CgkIy5WWr40PEAIQBQ";
	public static final String ACHV_RINGER2_TRACK="CgkIy5WWr40PEAIQAg";
	public static final String ACHV_APRIL2_TRACK="CgkIy5WWr40PEAIQBA";
	public static final String ACHV_GEO2_TRACK="CgkIy5WWr40PEAIQBg";
	public static final String ACHV_RINGER2_TRACK_SHIELD="CgkIy5WWr40PEAIQBw";
	public static final String ACHV_APRIL2_TRACK_SHIELD="CgkIy5WWr40PEAIQCA";
	public static final String ACHV_GEO2_TRACK_SHIELD="CgkIy5WWr40PEAIQCQ";
	public static final String ACHV_UNLOCK="CgkIy5WWr40PEAIQCg";
	public static final String ACHV_HOARDER="CgkIy5WWr40PEAIQCw";

	public static final String FONT = "data/PRIMELEC.ttf";

	public static String MUSIC1 = "data/sound/runner_music1.mp3";
	public static String MUSIC2 = "data/sound/runner_music2.mp3";
	public static String MENU_MUSIC = "data/sound/menu_music.mp3";

	public static final String MENU_CLICK = "data/sound/menuClick.wav";
	public static final String NO_COINS_SOUND= "data/sound/noCoins.mp3";
	public static final String JUMP_SOUND= "data/sound/fling1.mp3";
	public static final String DOUBLE_JUMP_SOUND= "data/sound/fling3.mp3";
	public static final String COIN_SOUND= "data/sound/coin3.mp3";
	public static final String WIN_SOUND= "data/sound/win2.mp3";
	public static final String HIT_SOUND= "data/sound/hit_block.wav";
	public static final String UNLOCK_SOUND= "data/sound/unlock.wav";
	public static final String TOP_SOUND= "data/sound/top_distance.mp3";

	public static final float SCALE = 0.015625f;
	public static final float MAX_VELOCITY = 20;
	public static float SCREEN_WIDTH = (float) Gdx.graphics.getWidth() * SCALE;
	public static float SCREEN_HEIGHT = (float) Gdx.graphics.getHeight() * SCALE;
	public static float BORDER_HEIGHT = 1;

	public static final float ACTUAL_VIRTUAL_WIDTH = 1280;
	public static final float ACTUAL_VIRTUAL_HEIGHT = 720;
	public static final float VIRTUAL_WIDTH = 1280 * SCALE;
	public static final float VIRTUAL_HEIGHT = 720 * SCALE;

	public static final float ASPECT_RATIO = (float) VIRTUAL_WIDTH / (float) VIRTUAL_HEIGHT;
	public static final float UI_SCALE_X = VIRTUAL_WIDTH / SCREEN_WIDTH;
	public static final float UI_SCALE_Y = VIRTUAL_HEIGHT / SCREEN_HEIGHT;
	public static final float UI_SCALE = (UI_SCALE_X + UI_SCALE_Y) / 2;

	public static float PLAYER_WIDTH = 66 * SCALE * Player.SCALE;
	public static float PLAYER_HEIGHT = 94 * SCALE * Player.SCALE;
	public static float BLOCK_HEIGHT = 48 * SCALE * Block.SCALE;
	public static float BLOCK_WIDTH = 24 * SCALE * Block.SCALE;
	public static float CLOUD_HEIGHT = 70 * SCALE;
	public static float CLOUD_WIDTH = 128 * SCALE;
	public static float GROUND_WIDTH = 1280 * SCALE * Ground.SCALE;
	public static float GROUND_HEIGHT = 64 * SCALE * Ground.SCALE;
	public static float COIN_WIDTH = 44.5f * SCALE * Coin.SCALE;
	public static float COIN_HEIGHT = 44.5f * SCALE * Coin.SCALE;
	public static float DEFAULT_VOLUME = 0.5f;
	public static float SCREEN_DISTANCE=VIRTUAL_WIDTH / (BLOCK_WIDTH);
	public static final int PLAYS_BEFORE_AD = 5;
	
	public static final float HEIGHT_ADJUST= 0.02F;
	public static final float SEPARATION_X = 0.25f;
	public static final float SEPARATION_Y = 0.21f;
	public static final float SELECTED_WIDTH = 0.125f;
	public static final float SELECTED_HEIGHT = 0.22f;
	public static final float RINGER_X = 0.2F;
	public static final float RINGER_Y = 0.88f - SEPARATION_Y;
	public static final float TRACK_X = 0.32f;
	public static final float TRACK_Y = RINGER_Y - SEPARATION_Y - 0.05F;
	public static final float RUNNER_X = 0.06f;
	public static final float RUNNER_Y = 0.87f;
	public static final float BOOST_Y = TRACK_Y - SEPARATION_Y - 0.05F;
	
	public static final Color COLOR_BROWN=new Color(0.9264f, 0.6732f, 0.4332f, 1);
	
	public static final float MIN_WIDTH=720*SCALE;
	public static final float MIN_HEIGHT=360*SCALE;
	public static final float MAX_WIDTH=2048*SCALE;
	public static final float MAX_HEIGHT=1440*SCALE;
	
	public static final float RELATIVE_SPEED=1.05f;
	
	public enum TYPE {
		PLAYER, NULL, BLOCK, RED_BLOCK, COIN, GROUND, SHIELD, GOAL, CLOUD;
	}

	public enum INPUT {
		PUNCH, FLOAT, JUMP, ROLL, TOUCH_UP, HOLD, DIVE
	};

	public enum BOOST_TYPE {
		MAGNET, EXTRA_LIFE, SHIELD,COIN_MULT
	}

	public enum TRACKTYPE {
		TRACK1, TRACK2
	}

	public enum PLAYER_TYPE {
		RINGER, APRIL, GEO
	}
	
	public enum LB_TYPE{
		RINGER1,RINGER2,APRIL1,APRIL2,GEO1,GEO2
	}
	
	public ArrayList<String> tips=new ArrayList<String>(
			Arrays.asList(
					"Hold down while jumping to jump higher",
					"April can jump higher than Ringer and Geo",
					"The shield boost only saves you once",
					"Collect coins to unlock new characters and tracks",
					"Each track for each character is unique",
					"Geo can air dive!",
					"Tap quickly for a small jump",
					"Leaderboards are available for each track"
					));

}
